package com.example.ymm.modules1.service.ms;

import com.alibaba.fastjson.JSONObject;
import com.example.ymm.base.BaseService;
import com.example.ymm.model.TableList;
import com.example.ymm.model.YmPageDto;
import com.example.ymm.modules1.entity.ms.*;
import com.example.ymm.modules1.entity.my.user.DbUser;
import com.example.ymm.modules1.entity.my.user.ViewDeptUser;
import com.example.ymm.modules1.query.ms.*;
import com.example.ymm.modules1.service.dto.ms.MsWarehouseDto;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface VckStockService extends BaseService<VckStock> {


    TableList<VckStock> list(VckStockQueryCriteria criteria, YmPageDto ymPage);


    /**
     * 无关联
     * @param criteria
     * @param ymPage
     * @return
     */
    TableList<VckStock> listNoRef(VckStockQueryCriteria criteria, YmPageDto ymPage);


    List<VckStock> queryAll(VckStockQueryCriteria criteria);


    /**
     * 库位列表
     * @param criteria
     * @return
     */
    List<MsWarehouseDto> warehouseList(MsWarehouseDtoQueryCriteria criteria);


    /**
     * 库存列表
     */
    List<VckStock> stockList(VckStockQueryCriteria criteria);

    /**
     * 库存列表
     * 无关联
     */
    List<VckStock> stockListNoRef(VckStockQueryCriteria criteria);

    TableList<CkOutbillList> outbillPageList(CkOutbillQueryCriteria criteria,YmPageDto ymPage);


    List<CkOutbillList> outbillList(CkOutbillQueryCriteria criteria);

    List<CkOutbillList> outbillTotal(CkOutbillQueryCriteria criteria);

    JSONObject outbillDeptUser();


    /**
     * oem pmc排产管理
     */


    TableList<ViewBaogonCailiao>  pmcTableList(PmcQueryCriteria pmcQueryCriteria, YmPageDto ymPage);


    /**
     * 获取缺料列表

     * @return
     */
    Map<String,String> getQueLiaos(QueLiaosQueryCriteria criteria);


    /**
     * 列表获取齐套数量
     * @return
     */
    Map<String,Integer> getQiTaoNum(QueLiaosQueryCriteria criteria);


    /**
     * 报工报检明细
     * @param pmcQueryCriteria
     * @return
     */
    List<ViewBaogonItem> pmcItemList(PmcQueryCriteria pmcQueryCriteria);



    /**
     * 列表获取 包装资料是否上传
     * @param biaoShiHaoIn
     * @return
     */
    Map<String,Integer> getBaoZhuangZiLiao(List<String> biaoShiHaoIn);


    /**
     * 统计报工数量
     * @param criteria
     * @return
     */
    BigDecimal sumBaoGonNum(BaoGonQueryCriteria criteria);



    /**
     * 查询bom 清单
     */
    List<BomMaterial>  orderBomList(PmcQueryCriteria pmcQueryCriteria);



    /**
     * 列表查询
     * @param pmcQueryCriteria
     * @return
     */
    List<ViewBaogonCailiao> pmcQueryList(PmcQueryCriteria pmcQueryCriteria);


    /**
     * 列表报工数量查询
     * @param pmcQueryCriteria
     * @return
     */
    List<ViewBaogonCailiao> baogongQueryList(PmcQueryCriteria pmcQueryCriteria);


    /**
     *
     * @param pmcQueryCriteria
     * @return
     */
    List<PmcWenJianGuiDto> pmcWenjianList(PmcQueryCriteria pmcQueryCriteria);


}
